let args = process.argv.slice(2)
const allowPackages = ['npm', 'yarn', 'pnpm']

if (args.length === 0) {
  console.log('请指定具备的包管理工具, 允许的范围为: ', allowPackages)
  console.log(' ')
  process.exit(1)
}

if (!allowPackages.includes(args[0])) {
  console.log(`请使用指定范围的包管理工具: ${allowPackages} , 当前传入-${args[0]}`)
  process.exit(1)
}

function getEnv () {
  // 例如：npm/6.14.17 node/v14.20.0 win32 x64
  let userAgent = process.env.npm_config_user_agent

  // 拿到当前运行的包管理器
  let list = userAgent.split(' ')

  let pacakgesInfo = list[0].split('/')

  const packageManage = pacakgesInfo[0]

  // yarn 和 pnpm 中间都有存在一个无用的信息 npm/? 剔除掉
  if (packageManage === 'yarn' || packageManage === 'pnpm') {
    list.splice(1, 1)
  }

  let nodeVersion = list[1].split('/')[1]
  let osInfo = [list[2], list[3]]

  let m = {
    // 使用的包管理工具
    packageManage,
    // 版本
    packageManageVersion: pacakgesInfo[1],
    // node 版本
    nodeVersion: nodeVersion,
    // 操作系统信息
    osInfo: osInfo
  }

  return m
}

let info = getEnv()

if (info.packageManage !== args[0]) {
  console.log(`统一指定的包管理工具为 ${args[0]}, 当前使用的是：${info.packageManage} 请更改`)
  console.log(' ')
  process.exit(1)
}

